﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Terrae.Clases;
using Terrae.GUI.Contrato;
using Terrae.Logica.Comandos;
using Terrae.Logica.FabricaLogica;
using Terrae.Clases.FabricaClase;

namespace Terrae.GUI.Presentador
{
    public class PresentadorAgregarPersona
    {
        #region Atributos

        private IContratoAgregarPersona _iContratoAgregarPersona;
        private Entidad _persona = FabricaEntidad.NuevaPersona();
        private Comando<bool> _comando;

        #endregion Atributos

        #region Contructor

        /// <summary>
        /// Constructor del presentador que recibe la vista del 
        /// agregar persona.
        /// </summary>
        /// <param name="iContratoAgregarPersona"></param>
        public PresentadorAgregarPersona(IContratoAgregarPersona
            iContratoAgregarPersona)
        {
            _iContratoAgregarPersona = iContratoAgregarPersona;
        }

        #endregion Contructor

        #region Métodos

        /// <summary>
        /// Método que llama al comando para agregar a una persona.
        /// </summary>
        public void AgregarPersona()
        {
            (_persona as Persona).Nombre = 
                _iContratoAgregarPersona.Nombre.Text;
            (_persona as Persona).Apellido =
                _iContratoAgregarPersona.Apellido.Text;
            (_persona as Persona).Fecha =
                _iContratoAgregarPersona.Fecha.Text;
            (_persona as Persona).Correo =
                _iContratoAgregarPersona.Correo.Text;
            (_persona as Persona).Usuario = 
                _iContratoAgregarPersona.Usuario.Text;
            (_persona as Persona).Contrasena = 
                _iContratoAgregarPersona.Contrasena.Text;
            (_persona as Persona).Celular =
                _iContratoAgregarPersona.Celular.Text;

            //Obtenemos el comando de agregar la persona desde la fabrica lógica.
            _comando = FabricaComando.CrearComandoAgregarPersona(_persona);

            if (_comando.Ejecutar())
            {
                _iContratoAgregarPersona.Mensaje1.Text = "Su registro fue realizado exitosamente";
                _iContratoAgregarPersona.Mensaje1.Visible = true;
            }
            else
            {
                _iContratoAgregarPersona.Mensaje.Text = "No se pudo realizar su registro. Intentelo nuevamente";
                _iContratoAgregarPersona.Mensaje.Visible = true;
            }
        }

        #endregion Métodos
    }
}